// examples/login-usage.js
/**
 * 登录工具函数使用示例
 */

import { 
  getLoginCode, 
  performLogin, 
  checkLoginStatus, 
  getUserInfo, 
  setLoginStatus, 
  clearLoginStatus,
  autoLogin 
} from '../utils/login.js'

// 示例1: 在页面加载时检查登录状态
export function checkLoginOnPageLoad() {
  if (checkLoginStatus()) {
    const userInfo = getUserInfo()
    console.log('用户已登录:', userInfo)
    // 执行已登录用户的逻辑
  } else {
    console.log('用户未登录，跳转到登录页面')
    wx.navigateTo({
      url: '/pages/login/login'
    })
  }
}

// 示例2: 在需要登录的操作中获取code
export async function handleNeedLoginAction() {
  try {
    // 检查是否已登录
    if (checkLoginStatus()) {
      console.log('用户已登录，直接执行操作')
      return
    }
    
    // 未登录，获取code
    const code = await getLoginCode()
    console.log('获取到登录code:', code)
    
    // 可以将code发送到后端进行验证
    // 或者跳转到登录页面
    wx.navigateTo({
      url: '/pages/login/login'
    })
    
  } catch (error) {
    console.error('获取登录code失败:', error)
    wx.showToast({
      title: '登录失败，请重试',
      icon: 'none'
    })
  }
}

// 示例3: 完整的登录流程
export async function handleCompleteLogin() {
  try {
    wx.showLoading({
      title: '登录中...',
      mask: true
    })
    
    // 执行完整登录流程（需要后端接口）
    const backendUrl = 'https://your-backend-api.com/login'
    const loginResult = await performLogin(backendUrl)
    
    wx.hideLoading()
    
    if (loginResult.success) {
      wx.showToast({
        title: '登录成功',
        icon: 'success'
      })
      
      // 登录成功后的处理
      console.log('登录成功，用户信息:', loginResult.userInfo)
      
      // 跳转到目标页面
      wx.redirectTo({
        url: '/pages/2411Ayiliao-pages/profile/profile'
      })
    }
    
  } catch (error) {
    wx.hideLoading()
    console.error('登录失败:', error)
    wx.showToast({
      title: '登录失败，请重试',
      icon: 'none'
    })
  }
}

// 示例4: 在个人中心页面使用
export function setupPersonalPage() {
  const userInfo = getUserInfo()
  
  if (userInfo) {
    // 设置页面数据
    this.setData({
      userInfo: userInfo,
      isLoggedIn: true
    })
  } else {
    // 未登录，跳转到登录页面
    wx.navigateTo({
      url: '/pages/login/login'
    })
  }
}

// 示例5: 退出登录
export function handleLogout() {
  wx.showModal({
    title: '确认退出',
    content: '确定要退出登录吗？',
    success: (res) => {
      if (res.confirm) {
        // 清除登录状态
        clearLoginStatus()
        
        wx.showToast({
          title: '已退出登录',
          icon: 'success'
        })
        
        // 跳转到登录页面
        setTimeout(() => {
          wx.redirectTo({
            url: '/pages/login/login'
          })
        }, 1500)
      }
    }
  })
}

// 示例6: 在app.js中使用
export function setupAppLogin() {
  // 检查登录状态
  if (checkLoginStatus()) {
    const userInfo = getUserInfo()
    console.log('应用启动，用户已登录:', userInfo)
    
    // 设置全局数据
    const app = getApp()
    app.globalData.userInfo = userInfo
    app.globalData.isLoggedIn = true
    
  } else {
    console.log('应用启动，用户未登录')
  }
}

// 示例7: 在需要权限的API调用中使用
export async function callProtectedAPI() {
  try {
    // 检查登录状态
    if (!checkLoginStatus()) {
      // 未登录，获取code
      const code = await getLoginCode()
      
      // 将code添加到请求头或请求参数中
      const requestData = {
        code: code,
        // 其他请求数据...
      }
      
      // 发送请求
      wx.request({
        url: 'https://your-api.com/protected-endpoint',
        method: 'POST',
        data: requestData,
        success: (res) => {
          console.log('API调用成功:', res)
        },
        fail: (err) => {
          console.error('API调用失败:', err)
        }
      })
      
    } else {
      // 已登录，直接调用API
      wx.request({
        url: 'https://your-api.com/protected-endpoint',
        method: 'POST',
        data: {
          // 请求数据...
        },
        success: (res) => {
          console.log('API调用成功:', res)
        },
        fail: (err) => {
          console.error('API调用失败:', err)
        }
      })
    }
    
  } catch (error) {
    console.error('处理API调用失败:', error)
  }
}
